# coding=utf-8
'''
约会网站
datingTestSet2.txt
第一列：飞行公里数
第二列：玩游戏时间
第三列：吃冰淇淋公升
第四列：魅力值
'''
from numpy import *

# 特征值缩放到 -1，1的范围
def autoNorm(data):
    minVaule=data.min(0)
    maxValue=data.max(0)
    data=(data-minVaule)/(maxValue-minVaule)
    return data


def readDataSet(filename):
    fr=open(filename)
    data= fr.readlines()
    group=zeros((len(data),3))
    labels=zeros((len(data),1))
    index=0
    for i in data:
        i=i.strip() # 去掉换行符
        listLine=i.split('\t')
        group[index]=listLine[:3]
        labels[index]=listLine[3]
        index+=1
    group[:,0]=autoNorm(group[:,0])
    group[:,1]=autoNorm(group[:,1])
    return group,labels

group,labels=readDataSet('datingTestSet.txt')
xData=group[0:700]
xLables=labels[0:700]
testData=group[700:]
testLabels=labels[700:]

# 1,需要分类的参数
# 2，数据集
# 3，返回前几个分类
def datingClass(newData,dataSet):
    red=(dataSet-newData)**2
    s=red.sum(axis=1)
    distance=(s**0.5).argsort()
    return xLables[distance][0]
#
error=0.0;
success=0;

length=len(testLabels)
for i in range(length):
    l=datingClass(testData[i],xData)
    if l==testLabels[i]:
        success+=1
    else:
        error+=1
print error
print error/length
# datingClass(data,group)




